home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / dpmigcc5.zip / RSX / SOURCE / FPU-EMU / DIV_SMAL.S < prev    next >
Text File  |  1994-05-27  |  1KB  |  51 lines

  1.     .file    "div_small.S"
  2. /*---------------------------------------------------------------------------+
  3.  |  div_small.S                                                              |
  4.  |                                                                           |
  5.  | Divide a 64 bit integer by a 32 bit integer & return remainder.           |
  6.  |                                                                           |
  7.  | Copyright (C) 1992    W. Metzenthen, 22 Parker St, Ormond, Vic 3163,      |
  8.  |                       Australia.  E-mail   billm@vaxc.cc.monash.edu.au    |
  9.  |                                                                           |
  10.  |                                                                           |
  11.  +---------------------------------------------------------------------------*/
  12.  
  13. /*---------------------------------------------------------------------------+
  14.  |    unsigned long div_small(unsigned long long *x, unsigned long y)        |
  15.  +---------------------------------------------------------------------------*/
  16.  
  17. #include "fpu_asm.h"
  18.  
  19. .text
  20.     .align 2,144
  21.  
  22. .globl _div_small
  23.  
  24. _div_small:
  25.     pushl    %ebp
  26.     movl    %esp,%ebp
  27.  
  28.     pushl    %esi
  29.  
  30.     movl    PARAM1,%esi    /* pointer to num */
  31.     movl    PARAM2,%ecx    /* The denominator */
  32.  
  33.     movl    4(%esi),%eax    /* Get the current num msw */
  34.     xorl    %edx,%edx
  35.     divl    %ecx
  36.  
  37.     movl    %eax,4(%esi)
  38.  
  39.     movl    (%esi),%eax    /* Get the num lsw */
  40.     divl    %ecx
  41.  
  42.     movl    %eax,(%esi)
  43.  
  44.     movl    %edx,%eax    /* Return the remainder in eax */
  45.  
  46.     popl    %esi
  47.  
  48.     leave
  49.     ret
  50.  
  51.